<?php

/**
 * Classe para o modulo de filtros
 * @author ricardo
 *
 */
class Admin_FiltroController extends Zend_Controller_Action
{
	protected $_filtro;
	protected  $_joinFiltro;
	
    public function init()
    {
       // Models
        $this->_filtro = new Application_Model_Filtro();
        $this->_joinFiltro = new Application_Model_JoinFiltro();
    }
    public function preDispatch ()
    {
        if (! Zend_Auth::getInstance()->getIdentity()) {
            $this->_redirect('/autenticacao');
        }
    }

    public function indexAction()
    {
    	$form = new Application_Form_Filtro();   
    	$form->getElement('Cadastrar')->removeDecorator('label');
    	
    	if ($this->_request->isPost()) {
            $dadosForm = $this->_request->getPost();
            if ($form->isValid($dadosForm)) {
                $this->_filtro->criaFiltro($dadosForm['Nome'], $dadosForm['Lista']);             
            }
        }       
        $pagina = (int) ($this->_getParam('pagina', 1));        
        $data = $this->_filtro->listaAllFiltros();       
        $paginacao = Zend_Paginator::factory($data);       
        $paginacao->setItemCountPerPage(10);        
        $paginacao->setCurrentPageNumber($pagina);
        $this->view->listaFiltroPaginacao = $paginacao;
        $this->view->form = $form;
    }
   
    /**
     * Metodo para editar filtro
     */
    public function editAction()
    {
    	$form = new Application_Form_EditFiltro();
/*    	$form->getElement('Campo')->removeDecorator('Label');
    	$form->getElement('Expressao')->removeDecorator('Label');
    	$form->getElement('PalavraChave')->removeDecorator('Label');  */  	
    	$this->view->form = $form;    	
    	if ($this->_request->isPost()) {
            $dadosForm = $this->_request->getPost();
            if ($form->isValid($dadosForm)) {
            	
        		if ($this->_hasParam('id') == false) {
            		$this->_redirect('/admin/filtro');
       			} else {
            		$idLista = $this->_request->getParam('id');
            		$join_idfiltro = $idLista;
            		$campo = $dadosForm['Campo'];
            		$expressao = $dadosForm['Expressao'];
            		$palavraChave = $dadosForm['PalavraChave'];
            		$this->_joinFiltro->addFiltro($join_idfiltro, $campo, $expressao, $palavraChave);
            		$this->_redirect('/admin/filtro/edit/id/'.$idLista);
       			}             
            }
        }else
        {
        	if($this->_hasParam('id') == false) {
            		$this->_redirect('/admin/filtro');
       	    } else {
       	    		$idLista = $this->_request->getParam('id');
        			$dados = $this->_joinFiltro->listaAllFiltros($this->_request->getParam('id'));
        			$this->view->listaFiltro = $dados;  
       	    }
        }
               	
    }
    
    /**
     * Metodo para salvar os filtros
     * */
    public function salvarAction()
    {
    	$dados = $this->_request->getPost();
    	for($i=0;$i<count($dados['conector']);$i++)
    	{
    		try {
    			$this->_joinFiltro->updateFiltro($dados['idjoin_filtro'][$i], $dados['conector'][$i]);
    		}catch (Zend_Db_Exception $e)
    		{
    			
    		}
    	}
    	$this->_redirect('/admin/filtro');
    	 
    }
    /**
     * Metodo para excluir regras
     */
    public function excluirRegraAction()
    {
    	// se não existir parametro (id) redireciona para pagina filtros pai
        if ($this->_hasParam('id') == false || $this->_hasParam('idjoin') == false) {
            $this->_redirect('/admin/filtro');
        } else {
            $idjoin_filtro = $this->_request->getParam('idjoin');
            $join_idfiltro = $this->_request->getParam('id');
            try 
            {
            	$this->_joinFiltro->excluirRegra($idjoin_filtro);
            	$maxId = $this->_joinFiltro->pegaMaxId();
            	$this->_joinFiltro->updateFiltro($maxId['idjoin_filtro'], null);
            	$this->_helper->flashMessenger(array('flashmessage' => 'Regra removida com sucesso!'));
            }catch (Zend_Db_Exception $e)
            {
            	$this->_helper->flashMessenger(array('flashmessage' => 'Não foi possível remover'.$e.''));
            }            
            $this->_redirect('/admin/filtro/edit/id/'.$join_idfiltro);
        }
    }
    /**
     * Metodo para excluir filtro
     */
    public function excluirFiltroAction()
    {
    if ($this->_hasParam('id') == false) {
            $this->_redirect('/admin/filtro');
        } else {            
            $idFiltro = $this->_request->getParam('id');
            try 
            {
            	$this->_filtro->excluirFiltro($idFiltro);
            	$this->_helper->flashMessenger(array('flashmessage' => 'Filtro removido com sucesso!'));
            }catch (Zend_Db_Exception $e)
            {
            	$this->_helper->flashMessenger(array('flashmessage' => 'Não foi possível remover'.$e));
            }            
            $this->_redirect('/admin/filtro/');
        }
    }
}

